package jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;

public class PedidoJDBC {

	public static void insertarpedido(Integer id_carrito, Integer descuento)
			throws SQLException {

		conexion.con();

		Double precio = 0.00;

		String p = ("Select precio from linea_de_venta where id_carrito="
				+ id_carrito + ";");

		ResultSet comprobacion = conexion.crearconsulta(p);

		while (comprobacion.next()) {
			precio = comprobacion.getDouble("precio") + precio;
		}

		String query = ("Insert into pedido (id_carrito, precio, descuento)"
				+ " values (" + id_carrito + "," + precio + "," + descuento + ");");

		if (PedidoJDBC.comprobarstock(id_carrito)) {
			PedidoJDBC.cambiarstock(id_carrito);
			if (!PedidoJDBC.comprobarpedido(id_carrito)) {
				conexion.insertar(query);
			} else {
				System.out.println("Ya existe en la base de datos");
			}
		}

		else{
			System.out.println("No hay stock de uno de los productos");
		}
		
	}

	public static boolean comprobarpedido(int id_carrito) throws SQLException {
		boolean resul = false;
		String c = "Select * from pedido where id_carrito='" + id_carrito
				+ "';";
		ResultSet comprobacion = conexion.crearconsulta(c);

		if (comprobacion.next()) {
			resul = true;
		}

		return resul;
	}

	public static Integer buscapedido(int id_carrito) throws SQLException {
		conexion.con();
		Integer id_pedido = 0;
		ResultSet comprobacion = conexion
				.crearconsulta("Select id_pedido from pedido where id_carrito='"
						+ id_carrito + "';");

		while (comprobacion.next()) {
			id_pedido = comprobacion.getInt("id_pedido");

		}
		conexion.cerrarconexion();
		return id_pedido;

	}

	public static boolean comprobarstock(Integer id_carrito)
			throws SQLException {
		boolean resul = false;
		Integer a = 0;

		String c = "Select id_almacen,unidad from linea_de_venta where id_carrito="
				+ id_carrito + ";";

		ResultSet comprobacion = conexion.crearconsulta(c);

		while (comprobacion.next()) {
			Integer id_almacen = comprobacion.getInt("id_almacen");
			Integer unidad = comprobacion.getInt("unidad");

			String q2 = "Select stock from almacen where id_almacen="
					+ id_almacen + ";";

			ResultSet c2 = conexion.crearconsulta(q2);
			while (c2.next()) {
				Integer stock = c2.getInt("stock");
				if (stock < unidad) {
					resul = true;
				} else {
					a = 1;
				}
			}

			if (a == 1) {
				resul = false;
			}

		}

		return resul;

	}

	public static void cambiarstock(Integer id_carrito) throws SQLException {

		Integer restar;

		Integer stock;

		String c = "Select id_almacen,unidad from linea_de_venta where id_carrito="
				+ id_carrito + ";";

		ResultSet comprobacion = conexion.crearconsulta(c);

		while (comprobacion.next()) {
			Integer id_almacen = comprobacion.getInt("id_almacen");
			Integer unidad = comprobacion.getInt("unidad");

			String q2 = "Select stock from almacen where id_almacen="
					+ id_almacen + ";";

			ResultSet c2 = conexion.crearconsulta(q2);
			while (c2.next()) {

				stock = c2.getInt("stock");
				restar = stock - unidad;
				String c3 = "UPDATE almacen SET stock=" + restar
						+ " WHERE id_almacen=" + id_almacen + ";";
				conexion.crearconsulta(c3);

			}

		}

	}

}
